// 导入express框架
const express = require('express');
//创建express实例
const app = express();

const bodyParser = require("body-parser")

//导入cors
const core = require('cors');
// 全家挂载
app.use(core());
// 当extended为false时，值为数组或者字符串，当为true时，值时任意值
app.use(bodyParser.urlencoded({extended:false}));

app.use(bodyParser.json());

// 注册一个错误中间件并挂载
app.use((req,res,next)=>{
	// status=0为成功，=1时为失败，默认设为1，方便处理失败情况
	res.cc = (err,status=1)=>{
		res.send({
			status,
			// 判断这个error是错误对象还是字符串
			message:err instanceof Error?err.message : err,
		})
	}
	next();
})
// multer是一个node的中间件，用来处理multipart/form-data类型的表单数据，主要用于上传图片
const multer = require("multer")
// server服务端下新建一个public文件，在该文件夹下新建upload文件夹存放图片
const upload = multer({dest:"./public/upload"})
app.use(upload.any())
// 静态托管
app.use(express.static("./public"))

// const jwtconfig = require("./jwt_config/index.js")
// const {expressjwt:jwt} = require("express-jwt")
// app.use(jwt({
// 	secret:jwtconfig.jwtSecretKey,algorithms:["HS256"],
// }).unless({
// 	path:[/^\/api\//]
// })
// )
const Joi = require('joi')
// 对不符合joi规则的情况进行报错
app.use((err,req, res, next) => {
	if (err instanceof Joi.ValidationError){
		res.send({
			status: 1,
			message:'输入的数据不符合验证规则'
		})
	}
})

// 挂载登录路由
const loginRouter = require("./router/login.js");
app.use("/api",loginRouter);
// 挂载用户路由
const userRouter = require("./router/userinfo.js");
app.use("/user",userRouter);
// 挂载设置路由
const setRouter = require("./router/setting.js");
app.use("/set",setRouter);
// 绑定 监听 实例和窗口
app.listen(3007, () => {
	console.log('http://127.0.0.1:30071')
})